The present invention relates generally to graphics systems in computers, and, more particularly, to a system and method for efficiently implementing pixel zooms in such computer graphics systems.
A computer graphics system, sometimes referred to as a graphics pipeline, accelerator, or engine, associated with a computer, for example, a personal computer or workstation, are commonly used for processing graphical data and displaying graphical representations of objects on two-dimensional computer display screens. Current computer graphics systems can provide highly detailed representations and are used in a variety of different applications.
In typical computers, particularly, in their computer graphics systems, an object to be represented on the computer display screen is defined by a plurality of graphics primitives. Primitives are basic components of a graphics picture and may include points, vectors (lines), and polygons, for example, triangles. Each primitive is made up of spans of picture elements (pixels). Hardware and/or software is implemented to render, or draw, on the two-dimensional display screen, the graphics primitives that represent the view of one or more objects being represented on the screen.
The primitives that define the three-dimensional object to be rendered are usually originated and provided to the graphics system by a central processing unit (CPU), which defines each primitive in terms of a set of primitive data. For example, when the primitive is a triangular primitive, then the CPU may define the primitive in terms of a set of xxe2x80x2, yxe2x80x2, zxe2x80x2 pixel coordinates (unnormalized orthogonal coordinate system) corresponding with the triangular primitive""s vertices, as well as set of color values (R, G, B values) for each vertex. Rendering hardware or software, associated with a rasterizer of the graphics system, ultimately interpolates the data from the CPU, typically after several other processing stages, in order to produce the x, y, z screen coordinates (normalized orthogonal coordinate system) corresponding with the pixels that are activated/deactivated to represent each primitive and the color values (R, G, B values) for each of the screen coordinates x, y, z. The x, y, z screen coordinate data is driven to a raster scan display device, such as a computer monitor, by the graphics system.
Generally, a pixel zoom is a feature made available to a user of the computer (and graphics system) that enables the user to enlarge and/or reduce a desired region of an image on a display screen. The user defines a region, or region, to be zoomed (enlarged or reduced) by any appropriate input(s), for example, defining a window around the region to be zoomed on a display screen. The region to be zoomed can be modified differently along its x, y axes. In other words, the region may be enlarged (abs|zoom|xe2x89xa71) along one axis, while reduced (abs|zoom| less than 1) along the other axis, or either enlarged or reduced by different magnitudes (zoomX, zoomY) along the x, y axes. Furthermore, the zoom magnitudes may be integers (integer zoomX, integer zoomY) or floating point numbers (float zoomX, float zoomY). Finally, enlargement along an axis (x or y) basically involves rendering an appropriate number of duplicates for each pixel in the zoomed region, while reduction along an axis generally involves deactivation of some of the pixels and strict copy of the others.
The OpenGL graphics specification, which is a well known computer graphics industry standard that was adopted around 1992, specifies a pixel zoom function, i.e., PixelZoom(float zoomX, float zoomY) performed at a raster position xrp, yrp as a window defined by coordinates bounded by a rectangle with corners: (xrp+zoomX*n, yrp+zoomY*m) and (xrp+zoomX*(n+1), yrp+zoomY*(m+1)), where zoomX and zoomY are each a negative, positive, or zero amount of zoom, where n and m are respectively the row and the column of pixels in the image, and where the coordinates (xrp,yrp) defines the raster scan position in the two-dimensional x,y space of the image. Any partial pixel whose center lies inside of this rectangle (or on its bottom or left boundaries) are produced in correspondence with this particular group of elements.
Most, if not all, currently implemented rasterizers blindly implement a pixel-by-pixel check and replication/deactivation based on the aforementioned equations, which define a bounding box, or splat. Use of these equations is sometimes referred to as the xe2x80x9cbounding box technique.xe2x80x9d The bounding box technique is undesirable in that it is very time consuming to implement, complicated, and computationally intensive, especially considering that the zoom function is performed on a pixel-by-pixel basis on every pixel in the region to be zoomed.
Thus, an unaddressed need exists in the industry for a more efficient and simplified way to implement pixel zooms in computer graphics systems associated with computers.
The present invention provides a pixel zoom system and method for computer graphics system of a computer for efficiently implementing a pixel zoom feature, or function or process. The pixel zoom system and method overcome the disadvantages and problems of the prior art, noted previously. Particularly, the pixel zoom system and method are less time consuming to implement, less complicated, and require far fewer mathematical computations, as compared to the prior art.
In architecture, the pixel zoom system includes a rasterizer designed to define a new zoomed (enlarged or reduced) raster image of a region in an original raster image having pixels defined in a coordinate system with orthogonal first and second axes (x,y), the region comprising a plurality of original pixels. The region to be zoomed can be modified differently along its x, y axes. In other words, the region may be enlarged (abs|zoom| greater than 1) along one axis, while reduced (abs|zoom| less than 1) along the other axis, or either enlarged or reduced by different magnitudes (zoomX, zoomY) along the x, y axes. In addition, the region may be flipped or translated, about the x axis (zoomX less than 0) or flipped about the y axis (zoomY greater than 0). Furthermore, the zoom magnitudes may be integers (integer zoomX, integer zoomY) or floating point numbers (float zoomX, float zoomY). The rasterizer is designed to (1) determine a starting raster position for the zoomed raster image; (2) determine a first number of first pixels along the first axis for each row of the original pixels; and (3) determine, for each row of the original pixels, a second number of second pixels along the second axis for each column of the original pixels. A rendering mechanism associated with the pixel zoom system is designed to render the zoomed image based upon the starting raster position, the first numbers corresponding with the original pixel rows, the second numbers corresponding with the original pixel columns.
The present invention can also be conceptualized as providing a method for efficiently implementing a pixel zoom function in a computer graphics system. In this regard, the method can be broadly and simply summarized by the following steps: (a) defining a zoomed raster image of a region in an original raster image having pixels defined in a coordinate system with orthogonal first and second axes, the region comprising a plurality of original pixels, by: (1) determining a starting raster position for said zoomed raster image; (2) determining a first number of first pixels along said first axis for each row of said original pixels; and (3) for each row of said original pixels, determining a second number of second pixels along said second axis for each column of said original pixels; and (b) rendering said zoomed image based upon said starting raster position, said first numbers corresponding with said original pixel rows, said second numbers corresponding with said original pixel columns.
Other features and advantages of the present invention will become apparent to one with skill in the art upon examination of the following drawings and detailed description. These additional features and advantages are intended to be included herein within the scope of the present invention and protected by the claims set forth in the latter part of this document.